home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 April / macformat-049.iso / mac / Shareware Plus / Developers / dropg++ / usr / include / sys / disk.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  4.5 KB  |  113 lines  |  [TEXT/R*ch]

  1. /*
  2.  * Copyright (c) 1992, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * This software was developed by the Computer Systems Engineering group
  6.  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
  7.  * contributed to Berkeley.
  8.  *
  9.  * All advertising materials mentioning features or use of this software
  10.  * must display the following acknowledgement:
  11.  *    This product includes software developed by the University of
  12.  *    California, Lawrence Berkeley Laboratory.
  13.  *
  14.  * Redistribution and use in source and binary forms, with or without
  15.  * modification, are permitted provided that the following conditions
  16.  * are met:
  17.  * 1. Redistributions of source code must retain the above copyright
  18.  *    notice, this list of conditions and the following disclaimer.
  19.  * 2. Redistributions in binary form must reproduce the above copyright
  20.  *    notice, this list of conditions and the following disclaimer in the
  21.  *    documentation and/or other materials provided with the distribution.
  22.  * 3. All advertising materials mentioning features or use of this software
  23.  *    must display the following acknowledgement:
  24.  *    This product includes software developed by the University of
  25.  *    California, Berkeley and its contributors.
  26.  * 4. Neither the name of the University nor the names of its contributors
  27.  *    may be used to endorse or promote products derived from this software
  28.  *    without specific prior written permission.
  29.  *
  30.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  31.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  32.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  33.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  34.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  35.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  36.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  37.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  38.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  39.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  40.  * SUCH DAMAGE.
  41.  *
  42.  *    @(#)disk.h    8.1 (Berkeley) 6/2/93
  43.  *
  44.  * from: $Header: disk.h,v 1.5 92/11/19 04:33:03 torek Exp $ (LBL)
  45.  */
  46.  
  47. /*
  48.  * Disk device structures.
  49.  *
  50.  * Note that this is only a preliminary outline.  The final disk structures
  51.  * may be somewhat different.
  52.  */
  53. struct buf;
  54.  
  55. struct dkdevice {
  56.     struct    device dk_dev;        /* base device */
  57.     struct    dkdevice *dk_next;    /* list of disks; not yet used */
  58.     int    dk_bps;            /* xfer rate: bytes per second */
  59.     int    dk_bopenmask;        /* block devices open */
  60.     int    dk_copenmask;        /* character devices open */
  61.     int    dk_openmask;        /* composite (bopen|copen) */
  62.     int    dk_state;        /* label state   ### */
  63.     int    dk_blkshift;        /* shift to convert DEV_BSIZE to blks */
  64.     int    dk_byteshift;        /* shift to convert bytes to blks */
  65.     struct    dkdriver *dk_driver;    /* pointer to driver */
  66.     daddr_t    dk_labelsector;        /* sector containing label */
  67.     struct    disklabel dk_label;    /* label */
  68. };
  69.  
  70. struct dkdriver {
  71.     void    (*d_strategy) __P((struct buf *));
  72. #ifdef notyet
  73.     int    (*d_open) __P((dev_t dev, int ifmt, int, struct proc *));
  74.     int    (*d_close) __P((dev_t dev, int, int ifmt, struct proc *));
  75.     int    (*d_ioctl) __P((dev_t dev, int cmd, caddr_t data, int fflag,
  76.                 struct proc *));
  77.     int    (*d_dump) __P((dev_t));
  78.     void    (*d_start) __P((struct buf *, daddr_t));
  79.     int    (*d_mklabel) __P((struct dkdevice *));
  80. #endif
  81. };
  82.  
  83. /* states */
  84. #define    DK_CLOSED    0        /* drive is closed */
  85. #define    DK_WANTOPEN    1        /* drive being opened */
  86. #define    DK_WANTOPENRAW    2        /* drive being opened */
  87. #define    DK_RDLABEL    3        /* label being read */
  88. #define    DK_OPEN        4        /* label read, drive open */
  89. #define    DK_OPENRAW    5        /* open without label */
  90.  
  91. #ifdef DISKSORT_STATS
  92. /*
  93.  * Stats from disksort().
  94.  */
  95. struct disksort_stats {
  96.     long    ds_newhead;        /* # new queue heads created */
  97.     long    ds_newtail;        /* # new queue tails created */
  98.     long    ds_midfirst;        /* # insertions into sort list */
  99.     long    ds_endfirst;        /* # insertions at end of sort list */
  100.     long    ds_newsecond;        /* # inversions (2nd lists) created */
  101.     long    ds_midsecond;        /* # insertions into 2nd list */
  102.     long    ds_endsecond;        /* # insertions at end of 2nd list */
  103. };
  104. #endif
  105.  
  106. #ifdef KERNEL
  107. void    disksort __P((struct buf *, struct buf *));
  108. char    *readdisklabel __P((struct dkdevice *, int));
  109. int    setdisklabel __P((struct dkdevice *, struct disklabel *));
  110. int    writedisklabel __P((struct dkdevice *, int));
  111. int    diskerr __P((struct dkdevice *, struct buf *, char *, int, int));
  112. #endif
  113.